# ==================6.序列==================
# @.针对序列的内置函数

"""
1.str
2.tuple
3.list
4.min
5.max
6.sum
7.len
8.sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作。
        a. iterable -- 可迭代对象。
        b. key -- 主要是用来进行比较的元素，只有一个参数，具体的函数的参数就是取自于可迭代对象中，指定可迭代
        对象中的一个元素来进行排序。
        c. reverse -- 排序规则， reverse = True 降序 ， reverse = False 升序（默认）。
9.reversed(seq) 函数返回一个反转的迭代器。
        a. seq -- 要转换的序列，可以是 tuple, string, list 或 range。

10.enumerate(sequence, [start=0])
        用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列，同时列出数据和数据下标，一般用在 for 循环当中。
11.zip(iter1 [,iter2 [...]])
        a. 用于将可迭代的对象作为参数，将对象中对应的元素打包成一个个元组，然后返回由这些元组组成的对象，这样
        做的好处是节约了不少的内存。
        b. 我们可以使用 list() 转换来输出列表。
        c. 如果各个迭代器的元素个数不一致，则返回列表长度与最短的对象相同，利用 * 号操作符，可以将元组解压为列表。


"""
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]
zip_data = zip(a, b)
print(zip_data)  # <zip object at 0x000000C5D89EDD88>
print(list(zip_data))  # [(1, 4), (2, 5), (3, 6)]
zip_data = zip(a, c)
print(list(zip_data))  # [(1, 4), (2, 5), (3, 6) ]
a1, a2 = zip(*zip(a, b))
print(list(a1))  # [1, 2, 3]
print(list(a2))  # [4, 5, 6]

print([*(1, 2, 453)])  # [1, 2, 453]

print('========练习题==========')
index = 0
# 1. 怎么找出序列中的最⼤、⼩值？
index += 1
print(index, max([1, 23, 4, 5]), min([1, 23, 4, 5]))
# 2. sort() 和 sorted() 区别
index += 1
lst = [1, 23, 4, 5]
lst.sort()
print(index, lst)
lst = [1, 23, 4, 5]
print(index, sorted(lst, reverse=True))
# 3. 怎么快速求 1 到 100 所有整数相加之和？
index += 1
print(index, sum(list(range(1, 101))))

# 4. 求列表 [2,3,4,5] 中每个元素的立方根。
index += 1

# 5. 将[‘x’,‘y’,‘z’] 和 [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式。
index += 1
x = ['x', 'y', 'z']
y = [1, 2, 3]
print(index, list(zip(x, y)))
